'''
当需要传创建的进程比较多的时候，需要用到进程池

阻塞式池子
非阻塞式池子
进程池需要依赖主进程活着  如果主进程死了，进程池中的子进程也会死亡

进程复用
'''
#非阻塞式池子
from multiprocessing import Pool
import os
import time
from random import random
def task(task_name):
    print("开始任务:{}".format(task_name))
    st = time.time()
    time.sleep(random()*2)
    et = time.time()
    return "任务的id:{},任务的名称:{}，任务用时:{}".format(os.getpid(),task_name,et-st)
resL = []
def callfunc(n):
    resL.append(n)
if __name__ == '__main__':
    taskL = list("ABCDEFG")
    p = Pool(4)
    for i in taskL:
        p.apply_async(task,args=i,callback=callfunc)
    p.close()#往池子中添加任务（子进程）任务结束
    p.join()#等待进程池中的任务完成之后往下执行
    for i in resL:
        print(i)

